home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / xulrunner-1.9.0.14 / chrome / toolkit.jar / content / mozapps / preferences / changemp.js next >
Encoding:
Text File  |  2005-09-13  |  6.8 KB  |  234 lines

  1. //@line 39 "/build/buildd/xulrunner-1.9-1.9.0.14+build2+nobinonly/mozilla/toolkit/mozapps/preferences/changemp.js"
  2.  
  3. const nsPK11TokenDB = "@mozilla.org/security/pk11tokendb;1";
  4. const nsIPK11TokenDB = Components.interfaces.nsIPK11TokenDB;
  5. const nsIDialogParamBlock = Components.interfaces.nsIDialogParamBlock;
  6. const nsPKCS11ModuleDB = "@mozilla.org/security/pkcs11moduledb;1";
  7. const nsIPKCS11ModuleDB = Components.interfaces.nsIPKCS11ModuleDB;
  8. const nsIPKCS11Slot = Components.interfaces.nsIPKCS11Slot;
  9. const nsIPK11Token = Components.interfaces.nsIPK11Token;
  10.  
  11.  
  12. var params;
  13. var tokenName="";
  14. var pw1;
  15.  
  16. function init()
  17. {
  18.   pw1 = document.getElementById("pw1");
  19.           
  20.   process();
  21. }
  22.  
  23.  
  24. function process()
  25. {
  26.    var secmoddb = Components.classes[nsPKCS11ModuleDB].getService(nsIPKCS11ModuleDB);
  27.    var bundle = document.getElementById("bundlePreferences");
  28.  
  29.    // If the token is unitialized, don't use the old password box.
  30.    // Otherwise, do.
  31.  
  32.    var slot = secmoddb.findSlotByName(tokenName);
  33.    if (slot) {
  34.      var oldpwbox = document.getElementById("oldpw");
  35.      var msgBox = document.getElementById("message");
  36.      var status = slot.status;
  37.      if (status == nsIPKCS11Slot.SLOT_UNINITIALIZED
  38.          || status == nsIPKCS11Slot.SLOT_READY) {
  39.       
  40.        oldpwbox.setAttribute("hidden", "true");
  41.        msgBox.setAttribute("value", bundle.getString("password_not_set")); 
  42.        msgBox.setAttribute("hidden", "false");
  43.  
  44.        if (status == nsIPKCS11Slot.SLOT_READY) {
  45.          oldpwbox.setAttribute("inited", "empty");
  46.        } else {
  47.          oldpwbox.setAttribute("inited", "true");
  48.        }
  49.       
  50.        // Select first password field
  51.        document.getElementById('pw1').focus();
  52.     
  53.      } else {
  54.        // Select old password field
  55.        oldpwbox.setAttribute("hidden", "false");
  56.        msgBox.setAttribute("hidden", "true");
  57.        oldpwbox.setAttribute("inited", "false");
  58.        oldpwbox.focus();
  59.      }
  60.    }
  61.  
  62.   if (params) {
  63.     // Return value 0 means "canceled"
  64.     params.SetInt(1, 0);
  65.   }
  66.   
  67.   checkPasswords();
  68. }
  69.  
  70. function setPassword()
  71. {
  72.   var pk11db = Components.classes[nsPK11TokenDB].getService(nsIPK11TokenDB);
  73.   var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  74.                                 .getService(Components.interfaces.nsIPromptService);
  75.   var token = pk11db.findTokenByName(tokenName);
  76.   dump("*** TOKEN!!!! (name = |" + token + "|\n");
  77.  
  78.   var oldpwbox = document.getElementById("oldpw");
  79.   var initpw = oldpwbox.getAttribute("inited");
  80.   var bundle = document.getElementById("bundlePreferences");
  81.   
  82.   var success = false;
  83.   
  84.   if (initpw == "false" || initpw == "empty") {
  85.     try {
  86.       var oldpw = "";
  87.       var passok = 0;
  88.       
  89.       if (initpw == "empty") {
  90.         passok = 1;
  91.       } else {
  92.         oldpw = oldpwbox.value;
  93.         passok = token.checkPassword(oldpw);
  94.       }
  95.       
  96.       if (passok) {
  97.         if (initpw == "empty" && pw1.value == "") {
  98.           // This makes no sense that we arrive here, 
  99.           // we reached a case that should have been prevented by checkPasswords.
  100.         } else {
  101.           if (pw1.value == "") {
  102.             var secmoddb = Components.classes[nsPKCS11ModuleDB].getService(nsIPKCS11ModuleDB);
  103.             if (secmoddb.isFIPSEnabled) {
  104.               // empty passwords are not allowed in FIPS mode
  105.               promptService.alert(window,
  106.                                   bundle.getString("pw_change_failed_title"),
  107.                                   bundle.getString("pw_change2empty_in_fips_mode"));
  108.               passok = 0;
  109.             }
  110.           }
  111.           if (passok) {
  112.             token.changePassword(oldpw, pw1.value);
  113.             if (pw1.value == "") {
  114.               promptService.alert(window,
  115.                                   bundle.getString("pw_change_success_title"),
  116.                                   bundle.getString("pw_erased_ok") 
  117.                                   + " " + bundle.getString("pw_empty_warning"));
  118.             } else {
  119.               promptService.alert(window,
  120.                                   bundle.getString("pw_change_success_title"),
  121.                                   bundle.getString("pw_change_ok"));
  122.             }
  123.             success = true;
  124.           }
  125.         }
  126.       } else {
  127.         oldpwbox.focus();
  128.         oldpwbox.setAttribute("value", "");
  129.         promptService.alert(window,
  130.                             bundle.getString("pw_change_failed_title"),
  131.                             bundle.getString("incorrect_pw"));
  132.       }
  133.     } catch (e) {
  134.       promptService.alert(window,
  135.                           bundle.getString("pw_change_failed_title"),
  136.                           bundle.getString("failed_pw_change"));
  137.     }
  138.   } else {
  139.     token.initPassword(pw1.value);
  140.     if (pw1.value == "") {
  141.       promptService.alert(window,
  142.                           bundle.getString("pw_change_success_title"),
  143.                           bundle.getString("pw_not_wanted")
  144.                           + " " + bundle.getString("pw_empty_warning"));
  145.     }
  146.     success = true;
  147.   }
  148.  
  149.   // Terminate dialog
  150.   if (success)
  151.     window.close();
  152. }
  153.  
  154. function setPasswordStrength()
  155. {
  156. // Here is how we weigh the quality of the password
  157. // number of characters
  158. // numbers
  159. // non-alpha-numeric chars
  160. // upper and lower case characters
  161.  
  162.   var pw=document.getElementById('pw1').value;
  163.  
  164. //length of the password
  165.   var pwlength=(pw.length);
  166.   if (pwlength>5)
  167.     pwlength=5;
  168.  
  169.  
  170. //use of numbers in the password
  171.   var numnumeric = pw.replace (/[0-9]/g, "");
  172.   var numeric=(pw.length - numnumeric.length);
  173.   if (numeric>3)
  174.     numeric=3;
  175.  
  176. //use of symbols in the password
  177.   var symbols = pw.replace (/\W/g, "");
  178.   var numsymbols=(pw.length - symbols.length);
  179.   if (numsymbols>3)
  180.     numsymbols=3;
  181.  
  182. //use of uppercase in the password
  183.   var numupper = pw.replace (/[A-Z]/g, "");
  184.   var upper=(pw.length - numupper.length);
  185.   if (upper>3)
  186.     upper=3;
  187.  
  188.  
  189.   var pwstrength=((pwlength*10)-20) + (numeric*10) + (numsymbols*15) + (upper*10);
  190.  
  191.   // make sure we're give a value between 0 and 100
  192.   if ( pwstrength < 0 ) {
  193.     pwstrength = 0;
  194.   }
  195.   
  196.   if ( pwstrength > 100 ) {
  197.     pwstrength = 100;
  198.   }
  199.  
  200.   var mymeter=document.getElementById('pwmeter');
  201.   mymeter.value = pwstrength;
  202.  
  203.   return;
  204. }
  205.  
  206. function checkPasswords()
  207. {
  208.   var pw1=document.getElementById('pw1').value;
  209.   var pw2=document.getElementById('pw2').value;
  210.   var ok=document.documentElement.getButton("accept");
  211.  
  212.   var oldpwbox = document.getElementById("oldpw");
  213.   if (oldpwbox) {
  214.     var initpw = oldpwbox.getAttribute("inited");
  215.  
  216.     if (initpw == "empty" && pw1 == "") {
  217.       // The token has already been initialized, therefore this dialog
  218.       // was called with the intention to change the password.
  219.       // The token currently uses an empty password.
  220.       // We will not allow changing the password from empty to empty.
  221.       ok.setAttribute("disabled","true");
  222.       return;
  223.     }
  224.   }
  225.  
  226.   if (pw1 == pw2){
  227.     ok.setAttribute("disabled","false");
  228.   } else
  229.   {
  230.     ok.setAttribute("disabled","true");
  231.   }
  232.  
  233. }
  234.